1. Field of the Invention
The present invention is related to a method and system for distribution of software related information that is required for running the software in different execution environments.
2. Related Art
Frequently, there are three types of software that are installed on a computer system. The first is the operating system itself. The second is application software that is normally loaded with the operating system (for example, when the hard disk drive is installed by the original equipment manufacturer, or OEM). The third is third party application software, such as games, database packages, third party word processors, etc., that is installed by the user subsequent to purchasing the computer.
Consider a certain application that is currently running on a computer. It may be necessary to supervise behavior of a component of that application, e.g., to perform a patching of the code of this application, depending on the run-time conditions of the installed third party component that behaves in an unforeseen manner, e.g., shared components of the application or components that result from application execution. In other words, the file itself that is stored on some storage media (such as a disk drive) needs to be patched, or the code that is loaded into memory or produced during execution needs to be patched, shared, or processed in some unforeseen manner. In order to accomplish this, it is necessary to know additional information related to the application for executing appropriate patching or modification of application behavior in a safe manner.
Such information may be addresses or offsets of the functions (or pieces of code) that are being patched. Another kind of information may be system settings such a registry settings provided during execution of the installed component. Also descriptions of file trees of even files may be unintentionally hidden or absent, or such information can depend on the environment where the installed component is running.
Conventionally, the user cannot readily retrieve such information. For example, the code of the application needs to be disassembled, and using a relatively complex process, offset addresses in some cases can be determined. This is frequently difficult and can run into a problem of violating either the copyright of the owner of the application software, or the license that is associated with that software. Also, even with sophisticated algorithms for reverse assembly, determination of the offset addresses of the relevant functions is not always possible.
Also, if the user has to configure auto-configured software in a specified manner, e.g., for execution of a software component in a virtual environment, such a task may be non-trivial, since some virtual environment runtime objects, properties or configurations might not be recognized by auto-configuration mechanisms.
Accordingly, there is a need in the art for producing and distribution of the information related to the installed software component that is unintentionally hidden or strictly unrecoverable, for the purpose of modifying the behavior of the installed component, or monitoring its behavior.